package com.zhairuihao.image;

import com.jfinal.plugin.activerecord.Page;
import com.zhairuihao.common.model.Blog;
import com.zhairuihao.common.model.Image;

/**
 * 本 demo 仅表达最为粗浅的 jfinal 用法，更为有价值的实用的企业级用法 详见 JFinal 俱乐部: http://jfinal.com/club
 *
 * <p>BlogService 所有 sql 与业务逻辑写在 Service 中，不要放在 Model 中，更不 要放在 Controller 中，养成好习惯，有利于大型项目的开发与维护
 */
public class ImageService {

    /**
     * 所有的 dao 对象也放在 Service 中，并且声明为 private，避免 sql 满天飞 sql 只放在业务层，或者放在外部 sql 模板，用模板引擎管理：
     * http://www.jfinal.com/doc/5-13
     */
    private Image dao = new Image().dao();

    public Page<Image> paginate(long classId, int pageNumber, int pageSize) {
        return dao.paginate(pageNumber, pageSize, "select image.*, class.name as cname ", "from z_image image left join z_class class on image.class_id= class.id where class_id=" + classId + " order by id desc");
    }

    public Page<Image> paginate(int pageNumber, int pageSize) {
        return dao.paginate(pageNumber, pageSize, " select image.*, class.name as cname ", "from z_image image left join z_class class on image.class_id= class.id order by id desc");
    }

    public Image like(long id) {
        Image byId = dao.findById(id);
        byId.setLike((Long.parseLong(byId.getLike()) + 1L) + "");
        byId.update();
        return byId;
    }

    public Image download(long id) {
        Image byId = dao.findById(id);
        byId.setDownload((Long.parseLong(byId.getDownload()) + 1L) + "");
        byId.update();
        return byId;
    }

    public Image findById(int id) {
        return dao.findById(id);
    }

    public void deleteById(int id) {
        dao.deleteById(id);
    }
}
